package com.sunny.miaosha.result;

public class Result<T> {
	private int code;
	private String msg;
	private T data;
	
	/**
	 * 成功时候的调用
	 */
	public static <T> Result<T> success(T data) {
		return new Result<T>(data);	
	}
	
	/**
	 * 失败时候的调用
	 */
	public static <T> Result<T> error(CodeMsg cm) {
		return new Result<T>(cm);	
	}
	
	// 提供给成功的
	// 将构造函数改为私有，只由类的内部进行调用，使用static方法供外部使用；并不希望用户在外部通过构造函数生成result对象
	private Result(T data) {
		this.code = 0; // 代表成功
		this.msg = "success"; // 成功信息返回
		this.data = data;
	}
	
	// 提供给失败的
	private Result(CodeMsg cm) {
		if(cm == null) {
			return;
		}
		
		this.code = cm.getCode();
		this.msg = cm.getMsg();
	}
	
	public int getCode() {
		return code;
	}

	public String getMsg() {
		return msg;
	}

	public T getData() {
		return data;
	}
}
